package com.oa.service.impl;

import com.oa.beans.SpLeaveApprovalCondition;
import com.oa.beans.SpLeaveApprovalStep;
import com.oa.beans.SpProcessInstance;
import com.oa.mapper.SpMapper;
import com.oa.service.SpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author 王鹏韬
 * @version v1.0
 * @dateTime 2025/3/13 15:25
 */
@Service
public class SpServiceImpl implements SpService {

    @Autowired
    private SpMapper spMapper;

    /**
     * 获取对应审批流程（请假、加班、出差）  连了用户表以及部门表 可按用户以及部门查询
     *
     * @param spProcessInstance
     * @return 返回所有审批流程信息
     */
    @Override
    public List<SpProcessInstance> getSpInstanceByMore(SpProcessInstance spProcessInstance) {
        return spMapper.getSpInstanceByMore(spProcessInstance);
    }

    /**
     * 初次申请时添加实例
     *
     * @param spProcessInstance 实例信息
     * @return 影响的行数
     */
    @Override
    public int addSpInstance(SpProcessInstance spProcessInstance) {
        return spMapper.addSpInstance(spProcessInstance);
    }

    /**
     * 修改审批流程实例信息  申请人修改审批信息
     *
     * @param spProcessInstance@return 影响的行数
     */
    @Override
    public int updSpInstance(SpProcessInstance spProcessInstance) {
        return spMapper.updSpInstance(spProcessInstance);
    }

    /**
     * 删除审批流程实例
     *
     * @param id
     * @return 影响的行数
     */
    @Override
    public int delSpProcessInstance(int id) {
        return spMapper.delSpProcessInstance(id);
    }

    /**
     * 初次编辑审批步骤（请假与出差） 条件id为空就代表是串行审批  角色职位为空就代表在条件表了有了角色职位
     * 角色职位不为空，代表是串行选择的审批角色职位
     *
     * @param spLeaveApprovalStep
     * @return
     */
    @Override
    public int addSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep) {
        return spMapper.addSpLeaveSteps(spLeaveApprovalStep);
    }

    /**
     * 获取对应的流程的审批步骤 （请假与出差） 根据审批类型外键id
     *
     * @param spLeaveApprovalStep@return 影响的行数
     */
    @Override
    public List<SpLeaveApprovalStep> getSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep) {
        return spMapper.getSpLeaveSteps(spLeaveApprovalStep);
    }

    /**
     * 更改对应流程的审批步骤  （请假与出差）
     *
     * @param spLeaveApprovalStep@return 影响的行数
     */
    @Override
    public int updSpLeaveSteps(SpLeaveApprovalStep spLeaveApprovalStep) {
        return spMapper.updSpLeaveSteps(spLeaveApprovalStep);
    }

    /**
     * 删除对应流程的审批步骤 （请假与出差）
     *
     * @param id
     * @return 影响的行数
     */
    @Override
    public int delSpLeaveSteps(int id) {
        return spMapper.delSpLeaveSteps(id);
    }

    /**
     * 初次编辑审批步骤对应的审批条件时  (请假出差)
     *
     * @param spLeaveApprovalCondition@return 影响的行数
     */
    @Override
    public int addSpLeaveConitions(SpLeaveApprovalCondition spLeaveApprovalCondition) {
        return spMapper.addSpLeaveConitions(spLeaveApprovalCondition);
    }

    /**
     * 编辑更改审批步骤对应的审批条件时  (请假出差)
     *
     * @param spLeaveApprovalCondition@return 影响的行数
     */
    @Override
    public int updSpLeaveConitions(SpLeaveApprovalCondition spLeaveApprovalCondition) {
        return spMapper.updSpLeaveConitions(spLeaveApprovalCondition);
    }

    /**
     * 删除审批步骤的条件
     *
     * @param id
     * @return 影响的行数
     */
    @Override
    public int delSpLeaveConitions(int id) {
        return spMapper.delSpLeaveConitions(id);
    }
}
